'''
题目：有四个数字：1、2、3、4，能组成多少个互不相同且无重复数字的三位数？各是多少？

程序分析：可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
'''
def dfs(val,nums,midres,visited):
    if len(midres)==3:
        kk = __import__("copy").deepcopy(midres)
        res.append(kk)
    for i in nums:
        if visited[i]==False:
            midres.append(i)
            visited[i] = True
            dfs(i,nums,midres,visited)
            midres.pop()
            visited[i] = False
if __name__ == '__main__':
    nums = [1,2,3,4]
    visited =  [False]*(len(nums)+1)
    midres = []
    res = []
    for i in nums:
        visited[i] = True
        midres.append(i)
        dfs(i,nums,midres,visited)
        visited[i] = False
        midres.pop()
    print(res)